export function compareTime(startDate: string | Date, endDate: string | Date): boolean {
    // 统一转换为Date对象处理
    const startTime = startDate instanceof Date ? startDate : new Date(startDate);
    const endTime = endDate instanceof Date ? endDate : new Date(endDate);

    // 验证日期有效性
    if (isNaN(startTime.getTime()) || isNaN(endTime.getTime())) {
        throw new Error('Invalid date format');
    }

    // 比较时间并返回结果
    // 如果开始时间 >= 结束时间，返回true（表示超时）
    // 否则返回false（表示未超时）
    return startTime >= endTime;
}


// 日期格式化
export function parseTime(time: string | number | Date | null | undefined, pattern?: string): string | null {
    // 处理无时间参数的情况
    if (arguments.length === 0 || !time) {
        return null;
    }

    // 默认格式化模板
    const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}';
    let date: Date;

    // 处理不同类型的时间输入
    if (time instanceof Date) {
        date = time;
    } else {
        if (typeof time === 'string') {
            // 处理字符串类型的时间
            time = time
                .replace(/-/gm, '/')
                .replace('T', ' ')
                .replace(/\.[\d]{3}/gm, '');
        }

        if (typeof time === 'number') {
            // 处理数字类型的时间戳（兼容秒级和毫秒级）
            if (time.toString().length === 10) {
                time *= 1000;
            }
        }

        date = new Date(time);
    }

    // 验证日期有效性
    if (isNaN(date.getTime())) {
        return null;
    }

    // 构建格式化所需的日期对象
    const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
    };

    // 替换模板中的占位符
    const timeStr = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        const value = formatObj[key as keyof typeof formatObj];

        // 处理星期几的转换
        if (key === 'a') {
            return ['日', '一', '二', '三', '四', '五', '六'][value] || '';
        }

        // 补零处理
        if (result.length > 0 && value < 10) {
            return `0${value}`;
        }

        return value.toString() || '0';
    });

    return timeStr;
}
